﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Data;

/// <summary>
/// Summary description for ModeloIngresarMaterial
/// </summary>
public class ModeloIngresarMaterial
{

    private Conexion conn;
    
    
    public ModeloIngresarMaterial()
	{
        conn = new Conexion();
        

	}

    public DataTable getMateriales()
    {
        try
        {

            DataTable dt = new DataTable();

            DataColumn c1 = new DataColumn();
            c1.ColumnName = "SKU";
            DataColumn c3 = new DataColumn();
            c3.ColumnName = "Nombre";
            DataColumn c4 = new DataColumn();
            c4.ColumnName = "UnidaddeMedida";
            DataColumn c5 = new DataColumn();
            c5.ColumnName = "idMaterial";

            dt.Columns.Add(c1);
            dt.Columns.Add(c3);
            dt.Columns.Add(c4);
            dt.Columns.Add(c5);


            String query = "SELECT TIPO_MATERIAL.SKUTIPOMATERIAL , TIPO_MATERIAL.NOMBRETIPOMATERIAL , UNIDAD_DE_MEDIDA.NOMBREUNIDADDEMEDIDA , TIPO_MATERIAL.IDTIPOMATERIAL " +
                            "FROM UNIDAD_DE_MEDIDA INNER JOIN " +
                            "TIPO_MATERIAL ON ( TIPO_MATERIAL.IDUNIDADDEMEDIDA = UNIDAD_DE_MEDIDA.IDUNIDADDEMEDIDA) ";

            bool connected = conn.iniciarConexion();

            if (connected == true)
            {
                SqlDataReader rows = null;
                SqlCommand comm = new SqlCommand(query, conn.getConn());
                rows = comm.ExecuteReader();
                while (rows.Read())
                {
                    DataRow r = dt.NewRow();
                    r["SKU"] = rows[0].ToString();
                    r["Nombre"] = rows[1].ToString();
                    r["UnidaddeMedida"] = rows[2].ToString();
                    r["idMaterial"] = rows[3].ToString();
                    dt.Rows.Add(r);

                }

                conn.terminarConexion();

                return dt;
            }

            else
            {

                conn.terminarConexion();
                return null;
            }
        }

        catch (Exception exc)
        {

            return null;
        }

    }


    public DataTable getMaterialesProyecto(String idProyecto)
    {
        try
        {

            DataTable dt = new DataTable();

            DataColumn c1 = new DataColumn();
            c1.ColumnName = "idMaterial";
            DataColumn c3 = new DataColumn();
            c3.ColumnName = "skuMaterial";
            DataColumn c4 = new DataColumn();
            c4.ColumnName = "nombreMaterial";
            DataColumn c5 = new DataColumn();
            c5.ColumnName = "cantidadMaterial";

            dt.Columns.Add(c1);
            dt.Columns.Add(c3);
            dt.Columns.Add(c4);
            dt.Columns.Add(c5);


            String query = "SELECT ESTIMACIONMATERIAL.IDTIPOMATERIAL , ESTIMACIONMATERIAL.CANTIDADESTIMADA , TIPO_MATERIAL.SKUTIPOMATERIAL , TIPO_MATERIAL.NOMBRETIPOMATERIAL " +
                            "FROM ESTIMACIONMATERIAL INNER JOIN " +
                            "TIPO_MATERIAL ON ( TIPO_MATERIAL.IDTIPOMATERIAL = ESTIMACIONMATERIAL.IDTIPOMATERIAL) " +
                            "WHERE ESTIMACIONMATERIAL.IDPROYECTO = "+idProyecto+" ";

            bool connected = conn.iniciarConexion();

            if (connected == true)
            {
                SqlDataReader rows = null;
                SqlCommand comm = new SqlCommand(query, conn.getConn());
                rows = comm.ExecuteReader();
                while (rows.Read())
                {
                    DataRow r = dt.NewRow();
                    r["idMaterial"] = rows[0].ToString();
                    r["skuMaterial"] = rows[2].ToString();
                    r["nombreMaterial"] = rows[3].ToString();
                    r["cantidadMaterial"] = rows[1].ToString();
                    dt.Rows.Add(r);

                }

                conn.terminarConexion();

                return dt;
            }

            else
            {

                conn.terminarConexion();
                return null;
            }
        }

        catch (Exception exc)
        {

            return null;
        }

    }

    public int insertEstimacionMaterial(String idProyecto, String filas, String numFilas)  
    {

        try
        {
            bool conectar = conn.iniciarConexion();
            if (conectar)
            {


                SqlCommand cmd = new SqlCommand("insertEstimacionMaterial", conn.getConn());
                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add(new SqlParameter("@rowsToInsert",
                                                           SqlDbType.VarChar,
                                                           4000,
                                                           "rowsToInsert"
                                                        )
                                        );

                cmd.Parameters.Add(new SqlParameter("@rowCount",
                                                       SqlDbType.Int,
                                                       0,
                                                       "rowCount"
                                                    )
                                    );

                cmd.Parameters.Add(new SqlParameter("@idProyecto",
                                                       SqlDbType.Int,
                                                       0,
                                                       "idProyecto"
                                                    )
                                    );

                cmd.Parameters.Add(new SqlParameter("@outParam",
                                                           SqlDbType.Int,
                                                           0,
                                                           ParameterDirection.Output,
                                                           false,
                                                           0,
                                                           0,
                                                           "outParam",
                                                           DataRowVersion.Default,
                                                           null
                                                        )
                                        );



                cmd.Parameters[0].Value = filas;
                cmd.Parameters[1].Value = numFilas;
                cmd.Parameters[2].Value = idProyecto;
                cmd.UpdatedRowSource = UpdateRowSource.OutputParameters;

                int per = cmd.ExecuteNonQuery();

                int result = (int)cmd.Parameters["@outParam"].Value;

                conn.terminarConexion();

                return result;
            }

            else
            {

                return -2;
            }
        }

        catch (Exception exc)
        {

           
            return -3;
        }

    }
}